package com.hanserwei.han_picture.domain.request.picture;

import com.hanserwei.han_picture.domain.common.PageRequest;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 分页查询图片请求
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class PictureQueryRequest extends PageRequest implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    @Schema(description = "图片id")
    private Long id;
    /**
     * 图片名称
     */
    @Schema(description = "图片名称")
    private String name;
    /**
     * 简介
     */
    @Schema(description = "图片简介")
    private String introduction;
    /**
     * 分类
     */
    @Schema(description = "图片分类")
    private String category;
    /**
     * 标签
     */
    @Schema(description = "图片标签")
    private List<String> tags;
    /**
     * 图片大小
     */
    @Schema(description = "图片大小")
    private Long picSize;
    /**
     * 图片宽度
     */
    @Schema(description = "图片宽度")
    private Integer picWidth;
    /**
     * 图片高度
     */
    @Schema(description = "图片高度")
    private Integer picHeight;
    /**
     * 图片比例
     */
    @Schema(description = "图片比例")
    private Double picScale;
    /**
     * 图片格式
     */
    @Schema(description = "图片格式")
    private String picFormat;
    /**
     * 搜索词(同时搜名称、简介等)
     */
    @Schema(description = "搜索词")
    private String searchText;
    /**
     * 用户 id
     */
    @Schema(description = "用户id")
    private Long userId;
    /**
     * 空间 id
     */
    @Schema(description = "空间id")
    private Long spaceId;
    /**
     * 是否只查询 spaceId 为 null 的图片(公共图片)
     */
    @Schema(description = "是否只查询 spaceId 为 null 的图片(公共图片)")
    private boolean nullSpaceId;
    /**
     * 审核状态：0-待审核; 1-通过; 2-拒绝
     */
    @Schema(description = "审核状态：0-待审核; 1-通过; 2-拒绝")
    private Integer reviewStatus;
    /**
     * 审核信息
     */
    @Schema(description = "审核信息")
    private String reviewMessage;
    /**
     * 审核人 ID
     */
    @Schema(description = "审核人 ID")
    private Long reviewerId;
    /**
     * 审核时间
     */
    @Schema(description = "审核时间")
    private LocalDateTime reviewTime;
    /**
     * 开始编辑时间
     */
    @Schema(description = "开始编辑时间")
    private LocalDateTime startEditTime;
    /**
     * 结束编辑时间
     */
    @Schema(description = "结束编辑时间")
    private LocalDateTime endEditTime;
}